package com.cskaoyan.javase.oop1._4compare;
/**
 * 局部变量和成员变量是Java程序开发时,最常见的两种变量类型.
 * 所以一定要搞清楚，它们之间的不同。
 *
 * 比较的方式
 * 局部变量和成员变量的比较，我们从以下五个方面去比较：
 *      1.在类中定义的位置不同
 *      成员变量: 定义在类中的成员位置
 *          成员位置: 类体中,局部位置之外(方法体,代码块之外)
 *      局部变量:  定义在方法体,代码块等局部位置
 *
 *      2.在内存中的位置不同
 *      成员变量: 存储在堆上的对象里
 *      局部变量: 存储在方法的栈帧,属于方法中的局部变量
 *
 *      3.生命周期不同
 *      成员变量: 和对象"同生共死" 对象只要成为垃圾,成员变量就无法访问了
 *      局部变量: 和方法调用同生共死
 *
 *      4.有无默认初始化不同
 *      成员变量: 有默认初始化,无需手动初始化,它也有默认值.
 *      局部变量: 没有默认初始化,没有默认值,必须手动初始化它,必须手动赋值
 *
 *      5.作用范围
 *      成员变量: 在整个类的内部都可以生效
 *          但是类中的成员方法可以直接访问
 *          static方法并不能直接访问
 *          但是可以通过创建对象,然后再用对象名点去访问
 *
 *      局部变量: 仅在大括号内部生效.
 *
 *
 *
 *
 * @since 17:16
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
}
class Animal{
    int age;
    // 成员方法
    public void test(){
        System.out.println(age);
    }
    // static修饰的成员方法
    public static void testStatic(){
        // System.out.println(age);
        Animal a = new Animal();
        System.out.println(a.age);
    }
}